<?php
/**
 * Cps
 *
 * @category Jdcloud
 * @package  DragonJd\Cps
 * @author   Jdcloud <jdcloud-api@jd.com>
 * @license  Apache-2.0 http://www.apache.org/licenses/LICENSE-2.0
 * @link     https://www.jdcloud.com/help/faq
 */

namespace DragonJd\Cps;

use DragonJd\JdCloudClient;
use DragonJd\Api\Service;
use DragonJd\Api\DocModel;
use DragonJd\Api\ApiProvider;
use DragonJd\PresignUrlMiddleware;

/**
 * Client used to interact with cps.
 *
 * @method \DragonJd\Result describeAliasIps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAliasIpsAsync(array $args = [])
 * @method \DragonJd\Result createAliasIp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAliasIpAsync(array $args = [])
 * @method \DragonJd\Result deleteAliasIp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAliasIpAsync(array $args = [])
 * @method \DragonJd\Result describeCerts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCertsAsync(array $args = [])
 * @method \DragonJd\Result createCert(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCertAsync(array $args = [])
 * @method \DragonJd\Result describeCert(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCertAsync(array $args = [])
 * @method \DragonJd\Result removeCert(array $args = [])
 * @method \GuzzleHttp\Promise\Promise removeCertAsync(array $args = [])
 * @method \DragonJd\Result modifyCert(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyCertAsync(array $args = [])
 * @method \DragonJd\Result describeElasticIps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeElasticIpsAsync(array $args = [])
 * @method \DragonJd\Result applyElasticIps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise applyElasticIpsAsync(array $args = [])
 * @method \DragonJd\Result describeElasticIp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeElasticIpAsync(array $args = [])
 * @method \DragonJd\Result modifyElasticIpBandwidth(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyElasticIpBandwidthAsync(array $args = [])
 * @method \DragonJd\Result describeElasticIpName(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeElasticIpNameAsync(array $args = [])
 * @method \DragonJd\Result describeDeviceTypes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDeviceTypesAsync(array $args = [])
 * @method \DragonJd\Result describeOS(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeOSAsync(array $args = [])
 * @method \DragonJd\Result describeDeviceRaids(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDeviceRaidsAsync(array $args = [])
 * @method \DragonJd\Result describeInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceAsync(array $args = [])
 * @method \DragonJd\Result describeInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstancesAsync(array $args = [])
 * @method \DragonJd\Result createInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstancesAsync(array $args = [])
 * @method \DragonJd\Result describeInstanceName(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceNameAsync(array $args = [])
 * @method \DragonJd\Result assignIpv6Address(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assignIpv6AddressAsync(array $args = [])
 * @method \DragonJd\Result modifyInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceAsync(array $args = [])
 * @method \DragonJd\Result describeInstanceRaid(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceRaidAsync(array $args = [])
 * @method \DragonJd\Result describeInstanceStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceStatusAsync(array $args = [])
 * @method \DragonJd\Result restartInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restartInstanceAsync(array $args = [])
 * @method \DragonJd\Result stopInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopInstanceAsync(array $args = [])
 * @method \DragonJd\Result startInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startInstanceAsync(array $args = [])
 * @method \DragonJd\Result restartInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restartInstancesAsync(array $args = [])
 * @method \DragonJd\Result stopInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopInstancesAsync(array $args = [])
 * @method \DragonJd\Result startInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startInstancesAsync(array $args = [])
 * @method \DragonJd\Result reinstallInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise reinstallInstanceAsync(array $args = [])
 * @method \DragonJd\Result modifyBandwidth(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyBandwidthAsync(array $args = [])
 * @method \DragonJd\Result associateElasticIp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateElasticIpAsync(array $args = [])
 * @method \DragonJd\Result disassociateElasticIp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateElasticIpAsync(array $args = [])
 * @method \DragonJd\Result resetPassword(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resetPasswordAsync(array $args = [])
 * @method \DragonJd\Result describeAvailablePrivateIp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAvailablePrivateIpAsync(array $args = [])
 * @method \DragonJd\Result describeInstanceMonitorInfo(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceMonitorInfoAsync(array $args = [])
 * @method \DragonJd\Result describeEventLogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEventLogsAsync(array $args = [])
 * @method \DragonJd\Result describeIpv6Address(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeIpv6AddressAsync(array $args = [])
 * @method \DragonJd\Result describeIpv6Addresses(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeIpv6AddressesAsync(array $args = [])
 * @method \DragonJd\Result assignIpv6AddressesBandwidth(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assignIpv6AddressesBandwidthAsync(array $args = [])
 * @method \DragonJd\Result modifyIpv6AddressBandwidth(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyIpv6AddressBandwidthAsync(array $args = [])
 * @method \DragonJd\Result describeIpv6Gateways(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeIpv6GatewaysAsync(array $args = [])
 * @method \DragonJd\Result describeIpv6Gateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeIpv6GatewayAsync(array $args = [])
 * @method \DragonJd\Result modifyIpv6Gateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyIpv6GatewayAsync(array $args = [])
 * @method \DragonJd\Result describeKeypairs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeKeypairsAsync(array $args = [])
 * @method \DragonJd\Result createKeypairs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createKeypairsAsync(array $args = [])
 * @method \DragonJd\Result importKeypairs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise importKeypairsAsync(array $args = [])
 * @method \DragonJd\Result describeKeypair(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeKeypairAsync(array $args = [])
 * @method \DragonJd\Result deleteKeypairs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteKeypairsAsync(array $args = [])
 * @method \DragonJd\Result describeListeners(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeListenersAsync(array $args = [])
 * @method \DragonJd\Result createListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createListenerAsync(array $args = [])
 * @method \DragonJd\Result modifyListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyListenerAsync(array $args = [])
 * @method \DragonJd\Result describeListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeListenerAsync(array $args = [])
 * @method \DragonJd\Result deleteListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteListenerAsync(array $args = [])
 * @method \DragonJd\Result startListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startListenerAsync(array $args = [])
 * @method \DragonJd\Result stopListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopListenerAsync(array $args = [])
 * @method \DragonJd\Result describeLoadBalancers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLoadBalancersAsync(array $args = [])
 * @method \DragonJd\Result createLoadBalancer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createLoadBalancerAsync(array $args = [])
 * @method \DragonJd\Result modifyLoadBalancer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyLoadBalancerAsync(array $args = [])
 * @method \DragonJd\Result describeLoadBalancer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLoadBalancerAsync(array $args = [])
 * @method \DragonJd\Result startLoadBalancer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startLoadBalancerAsync(array $args = [])
 * @method \DragonJd\Result stopLoadBalancer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopLoadBalancerAsync(array $args = [])
 * @method \DragonJd\Result associateElasticIpLB(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateElasticIpLBAsync(array $args = [])
 * @method \DragonJd\Result disassociateElasticIpLB(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateElasticIpLBAsync(array $args = [])
 * @method \DragonJd\Result describeSlbsName(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSlbsNameAsync(array $args = [])
 * @method \DragonJd\Result describeRegiones(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeRegionesAsync(array $args = [])
 * @method \DragonJd\Result describeCPSLBRegions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCPSLBRegionsAsync(array $args = [])
 * @method \DragonJd\Result describeRouteTable(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeRouteTableAsync(array $args = [])
 * @method \DragonJd\Result describeRouteTables(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeRouteTablesAsync(array $args = [])
 * @method \DragonJd\Result describeSecondaryCidrs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSecondaryCidrsAsync(array $args = [])
 * @method \DragonJd\Result createSecondaryCidr(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSecondaryCidrAsync(array $args = [])
 * @method \DragonJd\Result deleteSecondaryCidr(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSecondaryCidrAsync(array $args = [])
 * @method \DragonJd\Result describeServers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeServersAsync(array $args = [])
 * @method \DragonJd\Result addServers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addServersAsync(array $args = [])
 * @method \DragonJd\Result modifyServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyServerAsync(array $args = [])
 * @method \DragonJd\Result removeServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise removeServerAsync(array $args = [])
 * @method \DragonJd\Result describeServerGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeServerGroupsAsync(array $args = [])
 * @method \DragonJd\Result createServerGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createServerGroupAsync(array $args = [])
 * @method \DragonJd\Result describeServerGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeServerGroupAsync(array $args = [])
 * @method \DragonJd\Result modifyServerGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyServerGroupAsync(array $args = [])
 * @method \DragonJd\Result deleteServerGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteServerGroupAsync(array $args = [])
 * @method \DragonJd\Result describeBasicSubnet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBasicSubnetAsync(array $args = [])
 * @method \DragonJd\Result describeSubnets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSubnetsAsync(array $args = [])
 * @method \DragonJd\Result createSubnet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSubnetAsync(array $args = [])
 * @method \DragonJd\Result assignIpv6Cidr(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assignIpv6CidrAsync(array $args = [])
 * @method \DragonJd\Result describeSubnet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSubnetAsync(array $args = [])
 * @method \DragonJd\Result modifySubnet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifySubnetAsync(array $args = [])
 * @method \DragonJd\Result deleteSubnet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSubnetAsync(array $args = [])
 * @method \DragonJd\Result describeVpc(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeVpcAsync(array $args = [])
 * @method \DragonJd\Result modifyVpc(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyVpcAsync(array $args = [])
 * @method \DragonJd\Result deleteVpc(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteVpcAsync(array $args = [])
 * @method \DragonJd\Result describeVpcs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeVpcsAsync(array $args = [])
 * @method \DragonJd\Result createVpc(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createVpcAsync(array $args = [])
 * @method \DragonJd\Result assignIpv6Gateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assignIpv6GatewayAsync(array $args = [])
 */
class CpsClient extends JdCloudClient
{
    public function __construct(array $args)
    {
        $args['with_resolved'] = function (array $args) {
            $this->getHandlerList()->appendInit(
                PresignUrlMiddleware::wrap(
                    $this,
                    $args['endpoint_provider'],
                    [
                        'operations' => [
                        ],
                        'service' => 'cps',
                        'presign_param' => 'PresignedUrl',
                    ]
                ),
                'cps'
            );
        };

        parent::__construct($args);
    }
}